package com.zfsn.okaria.viewbinding

/**
 * Fragment 可见受到几个因素影响：
 * Fragment 是否处于 RESUMED 状态、Fragment 是否显示、Fragment Hint 是否对用户可见，
 * 判断Fragment可见性可能会被连续调用多次，如果当前已经对用户可见，则不进行判断可见性
 */
interface IFragmentVisibility {
    /**
     * Fragment可见时调用。  与onVisibleFirst 。onVisibleExceptFirst 互斥，仔细看代码，
     */
    fun onVisible() {}

    /**
     * Fragment不可见时调用。
     */
    fun onInvisible() {}

    /**
     * Fragment第一次可见时调用。 需要懒加载功能的 Fragment，只需要重写 onVisibleFirst
     */
    fun onVisibleFirst() {}

    /**
     * Fragment可见时（第一次除外）调用。
     */
    fun onVisibleExceptFirst() {}

    /**
     * Fragment当前是否对用户可见
     */
    fun isVisibleToUser(): Boolean
}